A non-volatile semiconductor storage device configured to store three-valued data or greater in each memory cell of a non-volatile semiconductor memory is known (see Japanese Patent Application Laid-open Publication No. 2004-241083, for example). In this non-volatile semiconductor storage device, the size of a current read out from the memory cell is compared with the size of each of a plurality of reference currents having different current values, respectively, thereby determining the value of the read-out multi-valued data, and the read-out data having the same value is output. Thus, this non-volatile semiconductor storage device includes a reference current generating circuit configured to generate a plurality of reference currents respectively having different current values.
In this configuration, if the reference current fluctuates due to a change in ambient temperature, it is not possible to determine the correct data value.
In order to address this issue, a current source circuit as described in Japanese Patent Application Laid-open Publication No. 2004-30041, for example, is proposed. This current source circuit has a first current generating circuit that generates a first current having the positive temperature characteristic where the current value thereof increases with temperature rise, and a second current generating circuit that generates a second current having the negative temperature characteristic where the current value thereof decreases with temperature rise, and the first and second currents are combined so as to generate a current having a desired temperature characteristic.